Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit fb725ea4de4b97267aee31082f32a2fbc587c42b


Parents : 7cf53ba
Author : Mark Qvist <mark@unsigned.io>
Date : 2024-06-04T15:51:29+02:00

Platform audio handling

Changes

3 files changed, 43 insertions(+), 1 deletions(-)


Diff

diff --git a/sbapp/plyer/platforms/android/audio.py b/sbapp/plyer/platforms/android/audio.py
index 8c5ff7be..3d40dc6a 100644
--- a/sbapp/plyer/platforms/android/audio.py
+++ b/sbapp/plyer/platforms/android/audio.py
@@ -56,7 +56,7 @@ class AndroidAudio(Audio):
else:
self._recorder.setAudioSource(AudioSource.DEFAULT)
self._recorder.setAudioSamplingRate(48000)
- self._recorder.setAudioEncodingBitRate(32000)
+ self._recorder.setAudioEncodingBitRate(16000)
self._recorder.setAudioChannels(1)
self._recorder.setOutputFormat(OutputFormat.OGG)
self._recorder.setAudioEncoder(AudioEncoder.OPUS)

diff --git a/sbapp/plyer/platforms/macosx/audio.py b/sbapp/plyer/platforms/macosx/audio.py
index a9f4237f..1f2069e0 100644
--- a/sbapp/plyer/platforms/macosx/audio.py
+++ b/sbapp/plyer/platforms/macosx/audio.py
@@ -6,6 +6,8 @@ from pyobjus.dylib_manager import INCLUDE, load_framework
from sbapp.plyer.facades import Audio
from sbapp.plyer.platforms.macosx.storagepath import OSXStoragePath
+import threading
+
load_framework(INCLUDE.Foundation)
load_framework(INCLUDE.AVFoundation)
@@ -28,6 +30,13 @@ class OSXAudio(Audio):
self._check_thread = None
self._finished_callback = None
+ self._loaded_path = None
+ self.is_playing = False
+ self.sound = None
+ self.pa = None
+ self.is_playing = False
+ self.recorder = None
+ self.should_record = False
def _check_playback(self):
while self._player and self._player.isPlaying:
@@ -81,6 +90,18 @@ class OSXAudio(Audio):
self._player = None
def _play(self):
+ # Conversion of Python file path string to Objective-C NSString
+ file_path_NSString = NSString.alloc()
+ file_path_NSString = file_path_NSString.initWithUTF8String_(
+ self._file_path
+ )
+
+ # Definition of Objective-C NSURL object for the output record file
+ # specified by NSString file path
+ file_NSURL = NSURL.alloc()
+ file_NSURL = file_NSURL.initWithString_(file_path_NSString)
+ self._current_file = file_NSURL
+
# Audio player instance initialization with the file NSURL
# of the last recorded audio file
self._player = AVAudioPlayer.alloc()
@@ -96,6 +117,12 @@ class OSXAudio(Audio):
self._check_thread = threading.Thread(target=self._check_playback, daemon=True)
self._check_thread.start()
+ def reload(self):
+ self._loaded_path = None
+
+ def playing(self):
+ return self.is_playing
+
def instance():
return OSXAudio()

diff --git a/sbapp/plyer/platforms/win/audio.py b/sbapp/plyer/platforms/win/audio.py
index dfe9edf0..c74d97d2 100644
--- a/sbapp/plyer/platforms/win/audio.py
+++ b/sbapp/plyer/platforms/win/audio.py
@@ -308,6 +308,15 @@ class WinAudio(Audio):
self._recorder = None
self._player = None
self._current_file = None
+ self._check_thread = None
+ self._finished_callback = None
+ self._loaded_path = None
+ self.is_playing = False
+ self.sound = None
+ self.pa = None
+ self.is_playing = False
+ self.recorder = None
+ self.should_record = False
def _start(self):
'''
@@ -390,6 +399,12 @@ class WinAudio(Audio):
self._player = WinPlayer(device=open_params.wDeviceID)
self._player.play()
+ def reload(self):
+ self._loaded_path = None
+
+ def playing(self):
+ return self.is_playing
+
def instance():
'''


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────